var mongoose=require('mongoose');
var Schema=mongoose.Schema;
var User=require('./user')
var config=require('../config');
var db=mongoose.createConnection(config.db_url);
db.on('error',function(error){
    console.log(error);
});
db.model('user',User.userSchema);
var calendarSchema=new Schema({
    user:{type:Schema.Types.ObjectId,ref:'user'},
    title:String,
    start:String,
    color:{type:String,default:'green'},
    end:String,
    orderTotal:{type:Number,default:0},
    state:{type:Number,default:0}
});
//posts---对应数据库表名
var Calendar=db.model('calendars',calendarSchema);
/**
 * 根据用户名查找该用户所有日程
 * @param username
 * @param callback
 */
Calendar.prototype.findCalendarById = function (id, callback) {

    Calendar.findOne({_id:id}, function(err, data){
        callback(err,data);
    });
};
Calendar.prototype.findCalendarByOpt = function (options, callback) {

    Calendar.find(options, function(err, datas){
        callback(err,datas);
    });
};
/**
 * 根据用户名和日期查看日程
 * @param options
 * @param callback
 */
Calendar.prototype.findCalendarByDate = function get(options, callback) {

    Calendar.find(options, function(err, docs){
        if (err) {
            return callback(err);
        }
        // 封装文档为User 对象
        var calendars=[];
        if(docs){
            docs.forEach(function(doc,index){
                var calendar=new Calendar(doc);
                calendars.push(calendar);
            })

            callback(err, calendars);
        }

    });
};
/**
 * 根据日程id修改日程
 * @param calendarId
 * @param options
 * @param callback
 */
Calendar.prototype.updateById=function (calendarId,options,callback){
    Calendar.update({_id:calendarId},options,function (err){

            callback(err);

    })
}
/**
 * 根据用户名删除该用户所有日程
 * @param username
 * @param callback
 */
Calendar.prototype.removeAllByUser=function(username,callback){
    Calendar.remove({user:username},function(err){
        if(err){
            callback(err);
        }
    })
}
/**
 * 根据日程id删除日程
 * @param calendarId
 * @param callback
 */
Calendar.prototype.removeCalendarById=function(calendarId,callback){
    Calendar.remove({_id:calendarId},function(err){
          callback(err);
    })
}
/**
 * 分页查询
 * @param obj
 * @param callback
 */
Calendar.prototype.findForPage=function(obj,callback){
    var q=obj.search||{};                                       //查询条件
    var col=obj.columns||{};                                    //返回字段
    var query=Calendar.find(q,col).sort('date').skip(obj.page.skipFrom).limit(obj.page.limit);
    query.exec(function(err, datas) {
        if (err) {
            callback(err, null, null);
        } else {
            Calendar.count(q, function(err, count) {
                if (err) {
                    callback(err, null, null);
                } else {
                    var pageCount = Math.ceil(count / obj.page.limit);
                    callback(null, pageCount, datas);
                }
            });
        }
    });

}
Calendar.prototype.updateOrderTotalById=function (id,num,callback){
    Calendar.update({_id:id},{'$inc':{orderTotal:num}},function(err){
        callback(err);
    })
}
module.exports = Calendar;
module.exports.calendarSchema=calendarSchema;



